<?php
// 这是系统自动生成的公共文件
if (!function_exists('get_tree_list')) {
    /**
     * 引用方式实现 父子级树状结构 该版本最后一级有空children元素
     *
     * @param array $list 数据库表结构的数组
     * @return array|mixed
     */
    function get_tree_list($list)
    {
        //将每条数据中的id值作为其下标
        $temp = [];
        foreach ($list as $v) {
            $v['children'] = [];
            $temp[$v['id']] = $v;
        }
        //获取分类树
        foreach ($temp as $k => $v) {
            $temp[$v['pid']]['children'][] = &$temp[$v['id']];
        }
        return isset($temp[0]['children']) ? $temp[0]['children'] : [];
    }
}

if (!function_exists('set_checked_menus')) {
    /**
     * 设置菜单树中被选中的节点
     *
     * @param array $menuList 菜单树
     * @param array $menuIds 被选中的许多节点的id
     */
    function set_checked_menus(&$menuList, $menuIds)
    {
        foreach ($menuList as &$menu) {
            if (empty($menu['children'])) { // 到达叶节点
                // 判断当前叶节点是否被选中
                if (in_array($menu['id'], $menuIds)) {
                    $menu['checked'] = true;
                }
            } else {
                set_checked_menus($menu['children'], $menuIds);
            }
        }
        unset($menu);
    }
}

if (!function_exists('get_tree_list_sequence')) {
    /**
     * 顺序排列的父子级树状结构
     *
     * @param array $list 由get_tree_list得到的父子级排列的父子级树状数组
     * @param array $target 目标数组
     * @return array|mixed
     */
    function get_tree_list_sequence($list, &$target)
    {
        foreach ($list as $v) {
            $target[$v['id']] = $v['title'];
            if (empty($v['children'])) {
                continue;
            } else {
                get_tree_list_sequence($v['children'], $target);
            }
        }
        return;
    }
}

if (!function_exists('get_cate_list')) {
    /**
     * 递归函数 实现无限级分类列表
     * @param $list
     * @param int $pid
     * @param int $level
     * @return array
     */
    function get_cate_list($list, $pid = 0, $level = 0) {
        static $tree = array();
        foreach($list as $row) {
            if($row['pid']==$pid) {
                $row['level'] = $level;
                $tree[] = $row;
                get_cate_list($list, $row['id'], $level + 1);
            }
        }
        return $tree;
    }
}